home *** CD-ROM | disk | FTP | other *** search
/ United Public Domain Gold 2 / United Public Domain Gold 2.iso / utilities / pu083.dms / pu083.adf / Morse / CODFILE / MORET3.BAS < prev    next >
BASIC Source File  |  1989-06-09  |  5KB  |  131 lines

  1. 5   'DDDDDDDVariable-speed Morse code
  2. 6 'generator programmed by Dick Conklin
  3.   ' Ported to the AMIGA by W1JT 8-10-88 FOR THE AMIGANET
  4. 15 F=600: S=.5:ELE=.5  ' S=21.84/SPEED, ELE = S FOR INITIAL DISPLAY
  5.  
  6. 'Sets pitch and speed
  7. LOCATE 5,11:MSG$="Morse Code Generator":GOSUB 500
  8. LOCATE 10,6:MSG$="Written by Dick Conklin, N4AT":GOSUB 500
  9. LOCATE 15,9:MSG$="Variable Speed and Pitch":GOSUB 500
  10. LOCATE 17,4: MSG$="AMIGA version ported by W1JT on 8-10-88":GOSUB 500
  11.  
  12. 20 CLS:LOCATE 7,15:PRINT  "Select Code Speed:"
  13. 25 LOCATE 8,15:PRINT "(words per minute-default = 20 WPM)
  14. 30 LOCATE 12,15:PRINT "Set speeds from 5 to 40 WPM"
  15. 70 LOCATE 15,25:PRINT "Enter speed and RETURN: "
  16. 80 LOCATE 15,51:INPUT "",W:IF W=0 THEN W=20
  17. 81 IF W=99 THEN END
  18.    IF W <13 THEN CW = 13 ELSE CW = W
  19. 82 S=21.84/CW  ' DOT DURATION
  20.    '  CALCULATION OF ELE -- ELEMENT SPACE DURATION
  21.    IF W >= 13 THEN ELE = S ELSE ELE = (43.68 - 1.68 * W) / W
  22. 85 CLS:INPUT "Do you want to create or change a text file? ";Q$
  23. IF "Y"=UCASE$(Q$) THEN GOSUB 3200
  24. 87 INPUT "Do you want to convert a text file into code? ";Q$
  25. IF "Y"=UCASE$(Q$) THEN GOSUB 3000:GOTO 20
  26. 90 CLS
  27. LOCATE 23,1:PRINT "Press right-AMIGA (.) to quit.   Change Line 15 for pitch."
  28. LOCATE 1,1:PRINT "Text typed below sent at ";W;" WPM:"
  29. LOCATE 2,1:PRINT "Change pitch on listing LINE 15; current pitch: ";F;" Hz" 
  30. LOCATE 4,1
  31. 100 I$=INKEY$:IF I$="" THEN 100
  32. 110 GOSUB 1000
  33. 120 GOTO 100
  34. 499 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
  35. 500 'Message Sender
  36. 510 FOR I=1 TO LEN(MSG$)
  37. 520 I$=MID$(MSG$,I,1):GOSUB 1000
  38. 530 NEXT I
  39. 540 RETURN 'to Sender
  40. 999 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
  41. 1000 'Code Generator
  42. 1005 C$=CHR$(ASC(I$) OR 32)
  43. 1010 IF C$="a" THEN B$=".-":GOTO 2000
  44. 1020 IF C$="b" THEN B$="-...":GOTO 2000
  45. 1030 IF C$="c" THEN B$="-.-.":GOTO 2000
  46. 1040 IF C$="d" THEN B$="-..":GOTO 2000
  47. 1050 IF C$="e" THEN B$=".":GOTO 2000
  48. 1060 IF C$="f" THEN B$="..-.":GOTO 2000
  49. 1070 IF C$="g" THEN B$="--.":GOTO 2000
  50. 1080 IF C$="h" THEN B$="....":GOTO 2000
  51. 1090 IF C$="i" THEN B$="..":GOTO 2000
  52. 1100 IF C$="j" THEN B$=".---":GOTO 2000
  53. 1110 IF C$="k" THEN B$="-.-":GOTO 2000
  54. 1120 IF C$="l" THEN B$=".-..":GOTO 2000
  55. 1130 IF C$="m" THEN B$="--":GOTO 2000
  56. 1140 IF C$="n" THEN B$="-.":GOTO 2000
  57. 1150 IF C$="o" THEN B$="---":GOTO 2000
  58. 1160 IF C$="p" THEN B$=".--.":GOTO 2000
  59. 1170 IF C$="q" THEN B$="--.-":GOTO 2000
  60. 1180 IF C$="r" THEN B$=".-.":GOTO 2000
  61. 1190 IF C$="s" THEN B$="...":GOTO 2000
  62. 1200 IF C$="t" THEN B$="-":GOTO 2000
  63. 1210 IF C$="u" THEN B$="..-":GOTO 2000
  64. 1220 IF C$="v" THEN B$="...-":GOTO 2000
  65. 1230 IF C$="w" THEN B$=".--":GOTO 2000
  66. 1240 IF C$="x" THEN B$="-..-":GOTO 2000
  67. 1250 IF C$="y" THEN B$="-.--":GOTO 2000
  68. 1260 IF C$="z" THEN B$="--..":GOTO 2000
  69. 1270 IF C$="1" THEN B$=".----":GOTO 2000
  70. 1280 IF C$="2" THEN B$="..---":GOTO 2000
  71. 1290 IF C$="3" THEN B$="...--":GOTO 2000
  72. 1300 IF C$="4" THEN B$="....-":GOTO 2000
  73. 1310 IF C$="5" THEN B$=".....":GOTO 2000
  74. 1320 IF C$="6" THEN B$="-....":GOTO 2000
  75. 1330 IF C$="7" THEN B$="--...":GOTO 2000
  76. 1340 IF C$="8" THEN B$="---..":GOTO 2000
  77. 1350 IF C$="9" THEN B$="----.":GOTO 2000
  78. 1360 IF C$="0" THEN B$="-----":GOTO 2000
  79. 1370 IF C$="." THEN B$=".-.-.-":GOTO 2000
  80. 1380 IF C$="?" THEN B$="..--..":GOTO 2000
  81. 1390 IF C$="," THEN B$="--..--":GOTO 2000
  82. 1400 IF C$="-" THEN B$="-...-":GOTO 2000
  83. 1410 IF C$="/" THEN B$="-..-.":GOTO 2000
  84. 1420 IF I$=" " THEN B$=" ":GOTO 2000
  85. 1520 IF I$=CHR$(8) THEN
  86.        B$="........"
  87.        LOCATE ,POS(0)
  88.        PRINT" ";
  89.        GOTO 2000
  90.      END IF  
  91. 1530 IF I$=":" THEN B$="---...":GOTO 2000
  92. 1540 IF I$=";" THEN B$="-.-.-.":GOTO 2000
  93. 1550 IF I$="(" OR C$=")" THEN B$="-.--.-":GOTO 2000
  94. 1560 IF I$="+" OR I$="&" THEN B$=". ...":GOTO 2000
  95.      IF I$="<" THEN B$=".-.-.":GOTO 2000
  96.      IF I$=">" THEN B$="...-.-":GOTO 2000 
  97. 1990 C$="" :B$="":I$=""
  98. 2000 PRINT I$; 'Display while sending
  99. 2010 FOR E = 1 TO LEN(B$)
  100.  IF MID$(B$,E,1)="." THEN
  101.   SOUND F,S,200
  102.  ELSEIF MID$(B$,E,1)="-" THEN
  103.     SOUND F,S*3,200
  104.  ELSE
  105.     SOUND F,S*3,0
  106.  END IF
  107.  SOUND F,ELE,0 'Space after Dot/Dash
  108.  NEXT E 'Get the next Dot or Dash
  109.  SOUND F,ELE*3,0 'Space after letter
  110.  RETURN 'Get the next letter
  111. 3000 'Convert text file into code
  112. 3005 ON ERROR GOTO 0 : PRINT "Current files:  ";:FILES: PRINT
  113. 3010 INPUT "Enter file name:  ",CODEFILE$
  114. 3020 OPEN CODEFILE$ FOR INPUT AS 1
  115. 3030 CLS:LOCATE 23,1:PRINT "Reading from file ";CODEFILE$
  116. LOCATE 1,1:PRINT "Text typed below sent at ";W;" WPM"
  117. LOCATE 3,1
  118. 3040 IF EOF(1) THEN CLOSE:RETURN
  119. 3050 INPUT #1,MSG$:GOSUB 500:PRINT:GOTO 3040
  120. 3200 'Enter and store text
  121. 3205 ON ERROR GOTO 0 :PRINT "Current files:  ";:FILES: PRINT
  122. 3210 INPUT "Enter file name: ",CODEFILE$
  123. OPEN CODEFILE$ FOR OUTPUT AS 1
  124. 3215 CLS:LOCATE 23,1
  125. PRINT "Enter  <RIGHT AMIGA> <.> when done"
  126. LOCATE 1,1:PRINT "Enter text to be stored below. Use < for AR , > for SK"
  127. 3220 LINE INPUT TEXT$
  128. 3230 IF TEXT$="" THEN CLOSE:RETURN
  129. 3240 PRINT #1,CHR$(34);TEXT$;" ";CHR$(34):GOTO 3220
  130.  
  131.